Seaside (software)

Seaside
Developer(s) The Seaside Team
Stable release 3.0 / September 13, 2010; 16 months ago (2010-09-13)
Preview release 3.0-alpha5 / September 8, 2009; 2 years ago (2009-09-08)
Written in Smalltalk
Operating system Cross-platform
Type Web application framework
License MIT License
Website seaside.st

Seaside is a free and open source web application framework for developing web applications in Smalltalk.

Seaside provides a component architecture in which web pages are built as trees of individual, stateful components, each encapsulating a small portion of a page. Seaside uses continuations to model multiple independent flows between different components.[1] Seaside is a continuation-based web application framework[2] based on the ability to manipulate the execution stack of some implementations of Smalltalk.

Contents

Key features

It is Seaside's implementation of continuations that makes it of particular interest; continuations provide a mechanism for rollback and resumption. This is essential in a web browser environment where "refresh" and "back" buttons may interrupt the flow of processing,[3] and continuation servers give the developer the ability to maintain state on the server in a scalable manner[4].

Another distinctive feature of Seaside is that it comes with an integrated development environment, providing access to development tools and debugging support from within the applications. In development mode, unhandled errors are reported to the web page, and developers can access and alter the program code and state directly from the web page, allowing the bug identification and fixing process to happen in an integrated environment.[5]

A Seaside application is a collection of interacting components. Each component stores state across page views and can "render" itself to the HTML stream. Because of this setup, it is straightforward to write a component once and then reuse it elsewhere. Seaside also supports the notion of tasks, which allow the programmer to describe the high-level logic of how components interact.

Seaside does not come with any built-in tools to support the generation or use of HTML templates; HTML markup is generated programmatically. (The Seaside-based Pier content-management framework adds wiki-markup syntax as a templating solution, however.) Seaside uses callbacks on closures to specify actions to be taken when clicking on a link or submitting a form. The developers and users of Seaside argue that this helps enforce separation of structure (markup) from content and presentation (CSS)[6]. Seaside's combination of components, callbacks, and closures can significantly reduce the semantic gap between a complex workflow and its representation in code[7].

Seaside supports Ajax through the officially supported script.aculo.us and jQuery integration. It also supports Comet style server-push technology[8].

Philosophy

Over the last few years, some best practices have come to be widely accepted in the web development field:

Seaside deliberately breaks all of these rules, indeed Avi Bryant describes it as a 'heretical' framework. He argues[9] that this careful and reasoned rejection of the conventional wisdoms of web development has led to a very effective model for the development of web applications.

Ports

Although the main development of Seaside happens in Pharo[10], there exist ports for other Smalltalk dialects. Michel Bany did regular ports to VisualWorks through Seaside version 2.7; Cincom is supporting Seaside as part of VisualWorks as of early 2008. Instantiations has announced Seaside support in its VA Smalltalk version 8.0. As of February 2009 VA Smalltalk 8.0 is in beta. Esteban Maringolo maintains the 2.8 port, plus some other add-ons (such as script.aculo.us) for Dolphin Smalltalk X6.[11]. Gemstone Systems is working on a port to Gemstone/S [12]. A port of 2.8 has been completed on GemStone[13], and preliminary version of 3.0 runs on GNU Smalltalk 3.0a and later[14].

Criticisms

Open-source projects using it

Proprietary projects using it

See also

References

External links